
package bienvenido;
import java.io.IOException;
import java.util.Vector;
import javax.bluetooth.*;
import javax.swing.JOptionPane;

public class RemoteDeviceDiscovery {
    public static final Vector/*<RemoteDevice>*/ devicesDiscovered = new Vector();

    public static void detector(String[] args) throws IOException, InterruptedException {

        final Object inquiryCompletedEvent = new Object();

        devicesDiscovered.clear();

        DiscoveryListener listener = new DiscoveryListener() {

            public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
                System.out.println("Dispositivo " + btDevice.getBluetoothAddress() + " encontrado");
                devicesDiscovered.addElement(btDevice);
                try {
                    System.out.println("     Nombre: " + btDevice.getFriendlyName(false));
                    String nombre=btDevice.getFriendlyName(false);
                    if (nombre.equals(""))nombre= "Desconocido";
                    BienvenidoView.Infoenvio2.setText("Encontrado: "+nombre);
                    if(ClienteOBEX.activar_envio){
                        BienvenidoView.Infoenvio2.setVisible(true);
                    }
                    Thread.sleep(2500);
                    if(ClienteOBEX.activar_envio){
                        BienvenidoView.Infoenvio2.setVisible(false);
                    }
                } catch (IOException cantGetDeviceName) {
                } 
                catch (java.lang.InterruptedException error){                    
                }
            }

            public void inquiryCompleted(int discType) {
                System.out.println("Búsqueda de dispositivos completada!");
                synchronized(inquiryCompletedEvent){
                    inquiryCompletedEvent.notifyAll();
                }
            }

            public void serviceSearchCompleted(int transID, int respCode) {
            }

            public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
            }
        };

        synchronized(inquiryCompletedEvent) {
            boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
            if (started) {
                BienvenidoView.Infoenvio.setText("Buscando Dispositivos ");
                BienvenidoView.Infoenvio.setVisible(true);
                System.out.println("Espere a que la búsqueda de dispositivos termine...");
                inquiryCompletedEvent.wait();
                if(devicesDiscovered.size()==0){
                    JOptionPane.showMessageDialog(null, "No se encontró ningún dispositivo Bluetooth alrededor.\nPresione 'Aceptar' o Cierre esta ventana para volver a realizar la búsqueda\nde dispositivos y el correspondiente envio de mensaje.");
                }else{
                    System.out.println(devicesDiscovered.size() +  " dispositivo(s) encontrado(s)");
                }
            }
        }
    }
}
